﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FONCREAGROINTEGRAL.Models;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Security.Permissions;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Data.OleDb;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.Configuration;
namespace FONCREAGROINTEGRAL.Controllers
{
    public class afpController : Controller
    {
        public SistIntFoncreagroEntities entidades = new SistIntFoncreagroEntities();
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult IndexRpt()
        {
            var query2 = entidades.EJERCICIOs.Single(cc => cc.EstadoP == true);
            int IdEjercicio = BuscarMes(query2.IdEjercicio);
            var query = entidades.RHRepAFPNet(IdEjercicio,query2.IdEjercicio).ToList();

            var result = (from p in query.ToList()
                          select new
                          {
                              CUSPP = p.CUSPP,
                              Tip = p.TipDocIdent,
                              Dni = p.DNI,
                              NombreCompleto = p.ApePaterno + " " + p.ApeMaterno + " " + p.Nombres,
                              RelacionLaboral = p.RelacionLaboral,
                              InicioRL = p.InicioRL,
                              CeseRL = p.CeseRL,
                              ExcepcionAportar = p.ExcepcionAportar,
                              RemunAsegurable = p.RemunAsegurable,
                              AporteVoluntarioCFP = p.AporteVoluntarioCFP,
                              AporteVoluntarioSFP = p.AporteVoluntarioSFP,
                              AporteVOluntarioEmp = p.AporteVOluntarioEmp,
                              TipoTrabajo = p.TipoTrabajo,
                              AFP = p.AFP
                          }).ToList();
            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }
        public int BuscarMes(int Anio) {
            DateTime fechaActual = System.DateTime.Now;
            int mesesito = fechaActual.Month;
            var query = entidades.EJERCICIOMES.Where(em => em.IdEjercicio == Anio).Single(cc => cc.mes == mesesito);

            int resultadito = query.idejerciciomes;
            return resultadito;
        }
        public ActionResult RHListEjercicioMes()
        {
            // var query = entidades.RHListEjercicioMes(5);
            var query = entidades.EJERCICIOMES.Where(em => em.IdEjercicio == 5);
            var result = (from p in query.ToList()
                          select new
                          {
                              idejerciciomes = p.idejerciciomes,
                              Mes = mesencadena(Convert.ToInt32(p.mes))
                          }).ToList();
            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }


        public ActionResult IndexEjercicio()
        {
            var query = entidades.EJERCICIOMES.Where(em => em.IdEjercicio == 5);

            var result = (from ea in query.OrderBy(a => a.mes).ToList()
                          select new
                          {
                              idejerciciomes = ea.idejerciciomes,
                              Mes = mesencadena(Convert.ToInt32(ea.mes)),
                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }

        public string mesencadena(int id)
        {
            var mes = "";
            switch (id)
            {
                case 1: mes = "Enero"; break;
                case 2: mes = "Febrero"; break;
                case 3: mes = "Marzo"; break;
                case 4: mes = "Abril"; break;
                case 5: mes = "Mayo"; break;
                case 6: mes = "Junio"; break;
                case 7: mes = "Julio"; break;
                case 8: mes = "Agosto"; break;
                case 9: mes = "Setiembre"; break;
                case 10: mes = "Octubre"; break;
                case 11: mes = "Noviembre"; break;
                case 12: mes = "Diciembre"; break;

            }
            return mes;
        }
        public ActionResult IndexEjercicios(int? Id)
        {
            var query2 = entidades.EJERCICIOs.Single(cc => cc.EstadoP == true);
            if (Id == 0 || Id == null)
            {
                Id = query2.IdEjercicio;
            }
            var query = entidades.EJERCICIOMES.Where(em => em.IdEjercicio == Id);

            var result = (from ea in query.OrderBy(a => a.mes).ToList()
                          select new
                          {
                              idejerciciomes = ea.idejerciciomes,
                              Mes = mesencadena(Convert.ToInt32(ea.mes)),
                          }).ToList();

            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }
        public ActionResult IndexFiltros2()
        {
            var query2 = entidades.EJERCICIOs.Single(cc => cc.EstadoP == true);
            string IdMes = Request.QueryString["IdTipo"];
            string IdAnio = Request.QueryString["IdPersonal"];
            var query = entidades.RHRepAFPNet(Int32.Parse(IdMes), Int32.Parse(IdAnio)).ToList();
            var result = (from p in query.ToList()
                          select new
                          {
                              CUSPP = p.CUSPP,
                              Tip = p.TipDocIdent,
                              Dni = p.DNI,
                              NombreCompleto = p.ApePaterno + " " + p.ApeMaterno + " " + p.Nombres,
                              RelacionLaboral = p.RelacionLaboral,
                              InicioRL = p.InicioRL,
                              CeseRL = p.CeseRL,
                              ExcepcionAportar = p.ExcepcionAportar,
                              RemunAsegurable = p.RemunAsegurable,
                              AporteVoluntarioCFP = p.AporteVoluntarioCFP,
                              AporteVoluntarioSFP = p.AporteVoluntarioSFP,
                              AporteVOluntarioEmp = p.AporteVOluntarioEmp,
                              TipoTrabajo = p.TipoTrabajo,
                              AFP = p.AFP
                          }).ToList();
            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult Reportdv()
        {
            string mes = Request.QueryString["IdEjercicioMes"];
            string anio = Request.QueryString["IdTipoTrabajador"];

            var query2 = entidades.EJERCICIOs.Single(cc => cc.EstadoP == true);
            if (anio == "" || anio == null || anio == string.Empty || anio == "null")
            {
                anio = Convert.ToString(query2.IdEjercicio);
            }
                LocalReport localReport = new LocalReport();
                localReport.ReportPath = Server.MapPath("~/Content/Reportes/RHRepAFPNet.rdlc");
                ReportDataSource reportDataSource = new ReportDataSource("DataSet1", entidades.RHRepAFPNet(Int32.Parse(mes), Int32.Parse(anio)));
                localReport.DataSources.Add(reportDataSource);
                string reportType = "EXCEL";
                string mimeType = "application/vnd.ms-excel";
                string encoding;
                string fileNameExtension = "xls";
                String deviceInfo = "";
                Warning[] warnings;
                string[] streams;
                byte[] renderedBytes;
                renderedBytes = localReport.Render(
                    reportType,
                    deviceInfo,
                    out mimeType,
                    out encoding,
                    out fileNameExtension,
                    out streams,
                    out warnings);
                Response.Clear();
                Response.ContentType = mimeType;
                Response.AddHeader("content-disposition", "attachment; filename=ReporteAFP.xls");
                Response.BinaryWrite(renderedBytes);
                Response.End();
                return File(renderedBytes, mimeType);

        }
    }
}
